package com.zimmur.service.account;

import java.util.List;

import com.zimmur.common.ReturnJsonEntity;
import com.zimmur.common.StatusCodeEnum;
import com.zimmur.model.account.CouponChannel;
import com.zimmur.model.account.CouponDetail;
import com.zimmur.model.account.CouponStock;
import com.zimmur.model.account.view.CouponView;
/**
 * 优惠券模块
 * @author Administrator
 *
 */
public interface ICouponService {

	/**
	 * 通过userId,订单价格  查询可用的优惠券
	 * @param userId 用户ID
	 * @param mininum 订单金额
	 * @param isUsePercent 是否含折扣商品
	 * @param isPrepay 是否含预售
	 * @return
	 */
	List<CouponView> selectByUserId(long userId,int mininum,int isUsePercent,int isPrepay);
	/**
	* <p>Title: selectAllCouponByMobileNo</p>
	* <p>Description: 通过用户id查询所有优惠券</p>
	* @param userId
	* @return
	 */
	List<CouponView> selectAllCouponByMobileNo(long userId);
	/**
	 * 通过主键查询优惠券
	 * @param couponId
	 * @param orderJe 
	 * @param mobileNo 
	 * @param orderJe 
	 * @param  
	 * @return
	 */
	CouponDetail selectCouponByCouponId(int couponId);
	/**
	 * 通过主键，更新优惠券
	 * @param couponDetail
	 * @return
	 */
	int updateCoupon(CouponDetail couponDetail);
	/**
	 * 添加一张优惠券
	 * @param couponDetail
	 * @return
	 */
	int addOneCoupon(CouponDetail couponDetail);
	/**
	 * 批量添加优惠券
	 * @param couponDetailList
	 * @return
	 */
	int addCouponList(List<CouponDetail> couponDetailList);
	/**
	 * 通过渠道查询有效批次
	 * @param channelId
	 * @return
	 */
	List<CouponStock> selectStockByChannelId(Integer channelId,String mobileNo);
	/**
	 * 更新优惠券批次的先关信息
	 * @param stockId
	 * @param used  	使用数量 1增加，0不增加
	 * @param send 		0不增加
	 * @param locked 	锁定数量  1增加，0不增加，-1减少
	 * @return
	 */
	int updateCouponStock(Integer stockId,int used,int send,int locked);
	/**
	 * 通过渠道类型查询批次
	 * @param type
	 * @return
	 */
	List<CouponChannel> selectChannelByType(String type);
	/**
	 * 通过渠道类型，手机号，发放优惠券
	 * @param mobileNo
	 * @param name
	 * @return
	 */
	int createCouponByMobileNo(String mobileNo,String type);
	
	List<CouponDetail> selectCouponByOrderId(Long orderId);
	/**
	* <p>Title: selectValidCoupon</p>
	* <p>Description: 查询单个优惠码有效的优惠券</p>
	* @param couponId
	* @param mobileNo
	* @param orderJe 订单金额
	* @param isUsePercent 是否含折扣商品
	* @param isPrepay 是否含预售
	* @return
	*/
	ReturnJsonEntity queryValidCoupon(String couponCode, String mobileNo,int orderJe,int isUsePercent,int isPrepay);
	
}
